﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//函数的定义
//int Add(int x, int y)
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}


//int Add(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	//输入
//	scanf("%d %d", &a, &b);
//	//计算
//	//int c = a + b;
//	int c = Add(a, b);//使用函数（调用函数）
//
//	//输出
//	printf("%d\n", c);
//
//	return 0;
//}



//void print(void)
//{
//	printf("hello world\n");
//}

//返回类型的地方的void表示函数没有返回值
//void print(void)//参数部分的void表示函数不需要参数
//{
//	printf("hello world\n");
//}
//
//int main()
//{
//	print();
//
//	return 0;
//}
//
//函数的返回类型如果没写的话，编译器认为返回的是int类型的值
//如果函数要求返回值，但是函数中没有使用return返回值，那具体返回什么就不确定了



//写一个函数将一个整型数组的内容，全部置为-1，再写一个函数打印数组的内容。
//void set_arr(int arr[], int sz, int set)
//{
//	int i;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = set;
//	}
//}
//void printf_arr(int arr[], int sz)
//{
//	int i;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d",arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = (sizeof arr) / (sizeof arr[0]);
//	printf_arr(arr, sz);
//	set_arr(arr, sz, -1);
//	printf_arr(arr, sz);
//	return 0;
//}
//1.数组在传参的时候，实参就写数组名就行,形式也是数组的形式
//2.实参和形参的名字是可以一样的，也可以一样的
//3.函数的在设计的时候，一定要尽量功能单一
//4.数组在传参的时候，形参的数组和实参的数组是同一个数组



//void print(int arr[][5], int r, int c)
//{
//	int i = 0;
//	for (i = 0; i < r; i++)
//	{
//		int j = 0;
//		for (j = 0; j < c; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//}
//
//int main()
//{
//	int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6 ,3,4,5,6,7 };
//	//打印二维数组的内容
//	print(arr, 3, 5);
//
//	return 0;
//}
//


//函数和变量必须要先声明后使用
////判断某年某月多少天
//#include<stdbool.h>
//bool leep_year(int year)//判断是否是闰年 使用布尔类型 判断真假 表达式中有个整型形参
//{
//	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))//能被4整除并且不能被100整除 或者被400整除的为闰年
//		return true;//返回值为真 返回到leep_year这个函数 现在这函数就是真的 传参到下面的函数嵌套
//	else 
//		return false;//返回值为假
//}
//
//int riqi(int year, int month)//形参
//{
//	int day[] = { 0,30,28,31,30,31,30,31,31,30,31,30,31 };//用一个数组把每年的每个月份天数存起来 加个0是为了让元素下标对上每个月
//	int days = day[month];//如果输入元素下标为 8 就会将数组中下标为8的 也就是31 赋值给days 返回值就会将days 此时它是31 给int riqi()然后显示出天数
//	if (leep_year(year) && month == 2)//判断如果为闰年 且是2月
//	{
//		days++;//2月就会加1天 
//	}
//	return days;//将对应天数返回给int riqi(int year, int month) 带着days传参到主函数
//}
//int main()
//{
//	int year = 0;
//	int month = 0;
//	scanf("%d %d", &year, &month);//输入哪年哪月  实参
//	int days = riqi(year,month);//传参到上面子函数
//	printf("%d\n", days);
//	return 0;
//}
//#include<string.h>
//int main()
//{
//	printf("%d\n", strlen("abcd"));//链式访问
//	return 0;
//}
//extern 是⽤来声明外部符号的，如果⼀个全局的符号在A⽂件中定义的，在B⽂件中想使⽤，就可以使
//⽤ extern 进⾏声明，然后使⽤
//static 和 extern 都是C语⾔中的关键字。
//static 是 静态的 的意思，可以⽤来：
//• 修饰局部变量
//• 修饰全局变量
//• 修饰函数
//extern 是⽤来声明外部符号的。
// 
// 生命周期
//全局变量的生命周期是整个工程/项目
//局部变量只是函数内的花括号

//作用域
//1. 局部变量的作⽤域是变量所在的局部范围。
//2. 全局变量的作⽤域是整个⼯程（项⽬）。
